Asia/Shanghai与GMT

您所在的位置:网站首页 什么是Asia Glory Asia/Shanghai与GMT

Asia/Shanghai与GMT

2024-07-09 23:51| 来源: 网络整理| 查看: 265

背景

今天公司一个模块从服务器迁移到k8s,出现时间toString()以后输出结果和以前不一致的情况,原因是以前是CST时间,k8s上统一设置环境时区为GMT-8了 本文会讲清楚中国使用时区的来龙去脉。 下一篇文档,会讲java中,遇到改时区问题,如何解决。

先了解冷知识

知识很重要,理解了这些才是时区的关键。 DST:Daylight Saving Time中文名叫“夏令时”,一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。中国1986-1991年实行夏令时,1992年废除。 CST:China Standard Time(老外认为有其他含义,中国就这个缩写),中国标准时。 GMT:Greenwich Mean Time,格林威治标准时,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区。

Asia/Shanghai与GMT-8的区别

开发和运维经常见到的Asia/Shanghai与GMT-8的是什么意思呢? GMT-8是东八区,北京时间和东八区一致。 Asia/Shanghai是已地区命名的地区标准时,在中国叫CST。这个地区标准时会兼容历史各个时间节点。中国1986-1991年实行夏令时,夏天和冬天差1个小时,Asia/Shanghai会兼容这个时间段。 结论:1992年以后,在中国,GMT-8和Asia/Shanghai是一样的时间,1986-1991之间,夏天会有一小时时差。

举例 { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); Date birthday = sdf.parse("1988-08-13 13:13:13"); System.out.println("birthday = " + birthday.toString()); System.out.println("birthday = " + birthday.getTime()); } { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date birthday = sdf.parse("1988-08-13 13:13:13"); System.out.println("birthday = " + birthday.toString()); System.out.println("birthday = " + birthday.getTime()); }

输出结果相差一小时。

birthday = Sat Aug 13 13:13:13 CDT 1988 birthday = 587448793000 birthday = Sat Aug 13 14:13:13 CDT 1988 birthday = 587452393000

如果年份改成2020年,时间就一样了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3